package br.com.datasun.biblioteca.ui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;

import javax.swing.JTextField;
import javax.swing.JComboBox;
import java.awt.FlowLayout;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;

import images.ImageLoader;
import br.com.datasun.biblioteca.entities.Estado;
import br.com.datasun.biblioteca.entities.Cidade;
import br.com.datasun.biblioteca.entities.Biblioteca;
import br.com.datasun.biblioteca.ui.components.BibliotecaTableModel;
import br.com.datasun.biblioteca.ui.listeners.*;
import br.com.datasun.biblioteca.ui.controller.ICRUDController;
import br.com.datasun.biblioteca.ui.controller.CadastroBibliotecaController;
import java.awt.event.ActionListener;

public class CadastroBibliotecaUI extends CadastroControllerUI {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField jtNomeBiblioteca;
	private JTextField jtLogradouro;
	private JTextField jtNumero;
	private JTextField jtComplemento;
	private JTextField jtBairro;
	private JTextField jtCEP;
	private JComboBox jcomboEstado = new JComboBox();
	private JComboBox jcomboCidade = new JComboBox();
	
	private JScrollPane jScrollPane1 = new JScrollPane();
	private JTable tabelaBibliotecas = new JTable();
	
	private JPanel jpSul = new JPanel();
	private JPanel jpTable = new JPanel();
	
	private JButton jbLimpar = new JButton("");
	private JButton jbNovo = new JButton("");
	private JButton jbFechar = new JButton("");
	private JButton jbExcluir = new JButton("");
	private JButton jbSalvar = new JButton("");
		
	private BibliotecaTableModel model;
	
	private Biblioteca bibliotecaEmEdicao;
	private Biblioteca bibliotecaSelecionada;
	
	private Color corCamposObrigatorios = new Color(255, 255, 204);
	
	private List<Estado> estados;
	
	private ICRUDController controller;
	
	private boolean isEditing = false; //Determina se o registro est� em edi��o
	public boolean isEditing(){
		return this.isEditing;
	}
	
	public void setIsEditing(boolean isEditing){
		this.isEditing = isEditing;
	}
	
	public String getNomeBiblioteca(){
		String resultado = jtNomeBiblioteca.getText();
		if (resultado != null){
			resultado = resultado.trim();
		}
		
		return resultado;
	}
	
	public String getLogradouro(){
		String resultado = jtLogradouro.getText();
		if (resultado != null){
			resultado = resultado.trim();
		}
		
		return resultado;
	}
	
	public String getNumero(){
		String resultado = jtNumero.getText();
		if (resultado != null){
			resultado = resultado.trim();
		}
		
		return resultado;
	}
	
	public String getComplemento(){
		String resultado = jtComplemento.getText();
		if (resultado != null){
			resultado = resultado.trim();
		}
		
		return resultado;
	}
	
	public String getBairro(){
		String resultado = jtBairro.getText();
		if (resultado != null){
			resultado = resultado.trim();
		}
		
		return resultado;
	}
	
	public Cidade getCidadeSelecionada(){
		Cidade resultado = null;
		if (jcomboCidade.getSelectedIndex() != -1){
			resultado = (Cidade) jcomboCidade.getSelectedItem();
		}
		return resultado;
	}
	
	public String getCEP(){
		String resultado = jtCEP.getText();
		if (resultado != null){
			resultado = resultado.trim();
		}
		
		return resultado;
	}
	
	public Estado getEstadoSelecionado(){
		Estado resultado = null;
		if (jcomboEstado.getSelectedIndex() != -1){
			resultado = (Estado) jcomboEstado.getSelectedItem();
		}
		return resultado;
	}
	
	
	/*
	 *  					enderecoEmEdicao.setNumero(jtNumero.getText());
							enderecoEmEdicao.setComplemento(jtComplemento.getText());
							enderecoEmEdicao.setBairro(jtBairro.getText());
							if (jcomboCidade.getSelectedIndex() != -1) {
								Cidade cidadeSelecionada = (Cidade) jcomboCidade.getSelectedItem();
								enderecoEmEdicao.setCidade(cidadeSelecionada);
							}
							
							if (jcomboEstado.getSelectedIndex() != -1){
								Estado estadoEmEdicao = (Estado) jcomboEstado.getSelectedItem();
								enderecoEmEdicao.getCidade().setEstado(estadoEmEdicao);
							}
							enderecoEmEdicao.setCep(jtCEP.getText());*/
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CadastroBibliotecaUI frame = new CadastroBibliotecaUI();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CadastroBibliotecaUI() {
		inicializar();		
	}
	
	private void inicializar(){
		setBounds(100, 100, 775, 468);
		
		setLayout(new BorderLayout(0, 0));				
		
		JLabel lblNomeCadastro = new JLabel("Cadastro de Bibliotecas");
		lblNomeCadastro.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblNomeCadastro.setHorizontalAlignment(SwingConstants.CENTER);
		add(lblNomeCadastro, BorderLayout.NORTH);
				
					
		jpSul.setPreferredSize(new Dimension(40, 220));
		add(jpSul, BorderLayout.SOUTH);
		jpSul.setLayout(new BorderLayout(0, 0));
		
		JPanel jpBotoes = new JPanel();
		FlowLayout flowLayout = (FlowLayout) jpBotoes.getLayout();
		flowLayout.setVgap(10);
		flowLayout.setHgap(10);
		jpBotoes.setPreferredSize(new Dimension(0,40));
		jpTable.setLayout(new BorderLayout(0, 0));
		jpSul.add(jpBotoes, BorderLayout.NORTH);
		jpSul.add(jpTable,BorderLayout.CENTER);
		
		tabelaBibliotecas.setColumnModel(new DefaultTableColumnModel());
		//permite selecionar apenas uma linha
		tabelaBibliotecas.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		
		model = new BibliotecaTableModel();
		tabelaBibliotecas.setModel(model);
		
		jScrollPane1.setPreferredSize(new Dimension(640, 180));
		jScrollPane1.setViewportView(tabelaBibliotecas);
		jpTable.add(jScrollPane1,BorderLayout.CENTER);
		
		Dimension dimensionBotoes = new Dimension(115,25);
		jbLimpar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jbLimpar_actionPerformed(e);
			}
		});
		jbLimpar.setPreferredSize(dimensionBotoes);
		jbNovo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				controller.btnNovoEventHandler();				
			}
		});
		jbNovo.setPreferredSize(dimensionBotoes);
		jbFechar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {				
				controller.btnFecharEventHandler();
			}
		});
		jbFechar.setPreferredSize(dimensionBotoes);
		jbSalvar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				controller.btnSalvarEventHandler();
			}
		});
		jbSalvar.setPreferredSize(dimensionBotoes);
		jbExcluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				controller.excluirEventHandler();
			}
		});
		jbExcluir.setPreferredSize(dimensionBotoes);
		
		jbLimpar.setIcon(ImageLoader.createImageIcon("btnLimpar115x25.png"));
		jbNovo.setIcon(ImageLoader.createImageIcon("btnNovo115x25.png"));
		jbFechar.setIcon(ImageLoader.createImageIcon("btnFechar115x25.png"));
		jbExcluir.setIcon(ImageLoader.createImageIcon("btnExcluir115x25.png"));
		jbSalvar.setIcon(ImageLoader.createImageIcon("btnSalvar115x25.png"));
		
		jpBotoes.add(jbLimpar);				
		jpBotoes.add(jbNovo);			
		jpBotoes.add(jbFechar);
		jpBotoes.add(jbExcluir);	
		jpBotoes.add(jbSalvar);
		
		JPanel jpCampos = new JPanel();
		add(jpCampos, BorderLayout.CENTER);
		GridBagLayout gbl_jpCampos = new GridBagLayout();
		gbl_jpCampos.columnWidths = new int[]{108, 226, 58, 0, 43, 0};
		gbl_jpCampos.rowHeights = new int[]{55, 0, 20, 20, 20, 0};
		gbl_jpCampos.columnWeights = new double[]{0.0, 1.0, 0.0, 1.0, 0.0, Double.MIN_VALUE};
		gbl_jpCampos.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		jpCampos.setLayout(gbl_jpCampos);
		
		JLabel lblNomeBiblioteca = new JLabel("Nome");
		lblNomeBiblioteca.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblNomeBiblioteca = new GridBagConstraints();
		gbc_lblNomeBiblioteca.insets = new Insets(0, 0, 5, 5);
		gbc_lblNomeBiblioteca.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblNomeBiblioteca.gridx = 0;
		gbc_lblNomeBiblioteca.gridy = 0;
		jpCampos.add(lblNomeBiblioteca, gbc_lblNomeBiblioteca);
		
		jtNomeBiblioteca = new JTextField();				
		GridBagConstraints gbc_jtNomeBiblioteca = new GridBagConstraints();
		gbc_jtNomeBiblioteca.gridwidth = 3;
		gbc_jtNomeBiblioteca.anchor = GridBagConstraints.SOUTH;
		gbc_jtNomeBiblioteca.insets = new Insets(0, 0, 5, 5);
		gbc_jtNomeBiblioteca.fill = GridBagConstraints.HORIZONTAL;
		gbc_jtNomeBiblioteca.gridx = 1;
		gbc_jtNomeBiblioteca.gridy = 0;
		jpCampos.add(jtNomeBiblioteca, gbc_jtNomeBiblioteca);
		jtNomeBiblioteca.setColumns(10);
		
		JLabel lblBorda = new JLabel("");
		GridBagConstraints gbc_lblBorda = new GridBagConstraints();
		gbc_lblBorda.insets = new Insets(0, 0, 5, 0);
		gbc_lblBorda.gridx = 4;
		gbc_lblBorda.gridy = 0;
		jpCampos.add(lblBorda, gbc_lblBorda);
		
		JLabel lblLogradouro = new JLabel("Logradouro");
		lblLogradouro.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblLogradouro = new GridBagConstraints();
		gbc_lblLogradouro.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblLogradouro.insets = new Insets(0, 0, 5, 5);
		gbc_lblLogradouro.gridx = 0;
		gbc_lblLogradouro.gridy = 1;
		jpCampos.add(lblLogradouro, gbc_lblLogradouro);
		
		jtLogradouro = new JTextField();
		GridBagConstraints gbc_jtLogradouro = new GridBagConstraints();
		gbc_jtLogradouro.insets = new Insets(0, 0, 5, 5);
		gbc_jtLogradouro.fill = GridBagConstraints.HORIZONTAL;
		gbc_jtLogradouro.gridx = 1;
		gbc_jtLogradouro.gridy = 1;
		jpCampos.add(jtLogradouro, gbc_jtLogradouro);
		//jtLogradouro.setColumns(10);
		
		JLabel lblNumero = new JLabel("N\u00FAmero");
		lblNumero.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblNumero = new GridBagConstraints();
		gbc_lblNumero.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblNumero.insets = new Insets(0, 0, 5, 5);
		gbc_lblNumero.gridx = 2;
		gbc_lblNumero.gridy = 1;
		jpCampos.add(lblNumero, gbc_lblNumero);
		
		jtNumero = new JTextField();
		jtNumero.setPreferredSize(new Dimension(100,20));
		GridBagConstraints gbc_jtNumero = new GridBagConstraints();
		gbc_jtNumero.anchor = GridBagConstraints.WEST;
		gbc_jtNumero.insets = new Insets(0, 0, 5, 5);
		gbc_jtNumero.gridx = 3;
		gbc_jtNumero.gridy = 1;
		jpCampos.add(jtNumero, gbc_jtNumero);
		//jtNumero.setColumns(10);
		
		JLabel jlComplemento = new JLabel("Complemento");
		jlComplemento.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_jlComplemento = new GridBagConstraints();
		gbc_jlComplemento.anchor = GridBagConstraints.SOUTHEAST;
		gbc_jlComplemento.insets = new Insets(0, 0, 5, 5);
		gbc_jlComplemento.gridx = 0;
		gbc_jlComplemento.gridy = 2;
		jpCampos.add(jlComplemento, gbc_jlComplemento);
		
		jtComplemento = new JTextField();
		jtComplemento.setPreferredSize(new Dimension(120,20));
		GridBagConstraints gbc_jtComplemento = new GridBagConstraints();
		gbc_jtComplemento.anchor = GridBagConstraints.WEST;
		gbc_jtComplemento.insets = new Insets(0, 0, 5, 5);
		gbc_jtComplemento.gridx = 1;
		gbc_jtComplemento.gridy = 2;
		jpCampos.add(jtComplemento, gbc_jtComplemento);
		
		JLabel lblBairro = new JLabel("Bairro");
		lblBairro.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblBairro = new GridBagConstraints();
		gbc_lblBairro.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblBairro.insets = new Insets(0, 0, 5, 5);
		gbc_lblBairro.gridx = 2;
		gbc_lblBairro.gridy = 2;
		jpCampos.add(lblBairro, gbc_lblBairro);
		
		jtBairro = new JTextField();
		GridBagConstraints gbc_jtBairro = new GridBagConstraints();
		gbc_jtBairro.insets = new Insets(0, 0, 5, 5);
		gbc_jtBairro.fill = GridBagConstraints.HORIZONTAL;
		gbc_jtBairro.gridx = 3;
		gbc_jtBairro.gridy = 2;
		jpCampos.add(jtBairro, gbc_jtBairro);
		jtBairro.setColumns(10);
		
		JLabel lblEstado = new JLabel("Estado");
		lblEstado.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblEstado = new GridBagConstraints();
		gbc_lblEstado.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblEstado.insets = new Insets(0, 0, 5, 5);
		gbc_lblEstado.gridx = 0;
		gbc_lblEstado.gridy = 3;
		jpCampos.add(lblEstado, gbc_lblEstado);
		
		
		jcomboEstado.setPreferredSize(new Dimension(120, 20));
		GridBagConstraints gbc_jcomboEstado = new GridBagConstraints();
		gbc_jcomboEstado.anchor = GridBagConstraints.WEST;
		gbc_jcomboEstado.insets = new Insets(0, 0, 5, 5);
		gbc_jcomboEstado.gridx = 1;
		gbc_jcomboEstado.gridy = 3;
		jpCampos.add(jcomboEstado, gbc_jcomboEstado);
		
		JLabel lblCidade = new JLabel("Cidade");
		lblCidade.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblCidade = new GridBagConstraints();
		gbc_lblCidade.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblCidade.insets = new Insets(0, 0, 5, 5);
		gbc_lblCidade.gridx = 2;
		gbc_lblCidade.gridy = 3;
		jpCampos.add(lblCidade, gbc_lblCidade);
				
		jcomboCidade.setPreferredSize(new Dimension(0,20));
		GridBagConstraints gbc_jcomboCidade = new GridBagConstraints();
		gbc_jcomboCidade.anchor = GridBagConstraints.SOUTH;
		gbc_jcomboCidade.insets = new Insets(0, 0, 5, 5);
		gbc_jcomboCidade.fill = GridBagConstraints.HORIZONTAL;
		gbc_jcomboCidade.gridx = 3;
		gbc_jcomboCidade.gridy = 3;
		jpCampos.add(jcomboCidade, gbc_jcomboCidade);
		
		JLabel lblCEP = new JLabel("CEP");
		lblCEP.setFont(new Font("Tahoma", Font.BOLD, 11));
		GridBagConstraints gbc_lblCEP = new GridBagConstraints();
		gbc_lblCEP.anchor = GridBagConstraints.SOUTHEAST;
		gbc_lblCEP.insets = new Insets(0, 0, 0, 5);
		gbc_lblCEP.gridx = 0;
		gbc_lblCEP.gridy = 4;
		jpCampos.add(lblCEP, gbc_lblCEP);
		
		jtCEP = new JTextField();
		jtCEP.setPreferredSize(new Dimension(120, 20));
		GridBagConstraints gbc_jtCEP = new GridBagConstraints();
		gbc_jtCEP.anchor = GridBagConstraints.WEST;
		gbc_jtCEP.insets = new Insets(0, 0, 0, 5);
		gbc_jtCEP.gridx = 1;
		gbc_jtCEP.gridy = 4;
		jpCampos.add(jtCEP, gbc_jtCEP);
		
		controller = new CadastroBibliotecaController(this);
		controller.carregarDados();		
		
		setTamanhoMaximoCampos();
		limparFormulario();
		editarCampos(false);
		
		jcomboEstado.addItemListener(new ItemListener() {
			
			@Override
			public void itemStateChanged(ItemEvent arg0) {
				Estado estadoSelecionado = new Estado();
				estadoSelecionado = (Estado) arg0.getItem();
				carregarCidadesEstado(estadoSelecionado);				
			}
		});
		
		//trata o evento de duplo click para edi��o
		tabelaBibliotecas.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				controller.selecionarParaEdicaoEventHandler(arg0);
			}
		});
		tabelaBibliotecas.addKeyListener(new KeyAdapter() {
			public void keyTyped(KeyEvent arg0) {
				char tecla = arg0.getKeyChar();
				if(tecla == KeyEvent.VK_DELETE){
					controller.excluirEventHandler();
				}
			}
		});
	}

	public void limparFormulario(){
		jtNomeBiblioteca.setText("");
		jtLogradouro.setText("");
		jtNumero.setText("");
		jtComplemento.setText("");
		jtBairro.setText("");
		jcomboEstado.setSelectedIndex(-1);
		jcomboCidade.setSelectedIndex(-1);
		jtCEP.setText("");		
	}
	
	public void editarCampos(boolean editar){
		jtNomeBiblioteca.setEditable(editar);
		jtLogradouro.setEditable(editar);
		jtNumero.setEditable(editar);
		jtComplemento.setEditable(editar);
		jtBairro.setEditable(editar);		
		jtCEP.setEditable(editar);
		
		jbLimpar.setEnabled(editar);
		jbNovo.setEnabled(!editar);
		jbFechar.setEnabled(true);
		jbExcluir.setEnabled(!editar);
		jbSalvar.setEnabled(editar);
		
		jcomboCidade.setEnabled(editar);
		jcomboEstado.setEnabled(editar);
		
		if (!editar){
			jtNomeBiblioteca.setBackground(null);
			jtLogradouro.setBackground(null);
			jtNumero.setBackground(null);	
			jcomboCidade.setBackground(null);
			jcomboEstado.setBackground(null);
		}
		
		tabelaBibliotecas.setEnabled(!editar);
		
	}
	
	private void jbLimpar_actionPerformed(ActionEvent e) {
		controller.btnLimparEventHandler();
	}
	
	public void carregarFormularioAPartirDe(Biblioteca bibliotecaAExibir){
		if(bibliotecaAExibir!= null){
			jtNomeBiblioteca.setText(bibliotecaAExibir.getNome());
			jtLogradouro.setText(bibliotecaAExibir.getEndereco().getNmLogradouro());
			jtNumero.setText(bibliotecaAExibir.getEndereco().getNumero());
			jtComplemento.setText(bibliotecaAExibir.getEndereco().getComplemento());
			jtBairro.setText(bibliotecaAExibir.getEndereco().getBairro());
			
			Estado estadoBiblioteca = bibliotecaAExibir.getEndereco().getCidade().getEstado();
			if (estadoBiblioteca != null){
				jcomboEstado.setSelectedItem(estadoBiblioteca);
				jcomboCidade.setSelectedItem(bibliotecaAExibir.getEndereco().getCidade());				
			}
			jtCEP.setText(bibliotecaAExibir.getEndereco().getCep());
		}
	}
	
	public void carregarCidadesEstado(Estado estadoSelecionado){
		List<Cidade> cidades = estadoSelecionado.getCidade();
		jcomboCidade.removeAllItems();
		for (Cidade cidade : cidades){
			jcomboCidade.addItem(cidade);
		}
	}
	
	public void inicializarComboEstados(){
	   for(Estado estado : estados){
	      jcomboEstado.addItem(estado);
	   }
			
	   Estado estadoSelecionado = new Estado();
	   estadoSelecionado = (Estado) jcomboEstado.getSelectedItem();
	   carregarCidadesEstado(estadoSelecionado);				
	}
	
	private void setTamanhoMaximoCampos(){
		jtNomeBiblioteca.addKeyListener(new KeyListenerTamanhoCampo(jtNomeBiblioteca, 255));
		jtLogradouro.addKeyListener(new KeyListenerTamanhoCampo(jtLogradouro, 255));
		jtNumero.addKeyListener(new KeyListenerTamanhoCampo(jtNumero, 12));
		jtComplemento.addKeyListener(new KeyListenerTamanhoCampo(jtComplemento, 100));
		jtBairro.addKeyListener(new KeyListenerTamanhoCampo(jtBairro, 255));
		jtCEP.addKeyListener(new KeyListenerTamanhoCampo(jtCEP, 9));
	}
	
	public void mudarCorCampoObrigatorioNomeBiblioteca(){
		jtNomeBiblioteca.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoNomeBiblioteca(){
		jtNomeBiblioteca.requestFocus();
	}
	
	public void mudarCorCampoObrigatorioLogradouro(){
		jtLogradouro.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoLogradouro(){
		jtLogradouro.requestFocus();
	}
	
	public void mudarCorCampoObrigatorioNumero(){
		jtNumero.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoNumero(){
		jtNumero.requestFocus();
	}
	
	public void mudarCorCampoObrigatorioCidade(){
		jcomboCidade.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoCidade(){
		jcomboCidade.requestFocus();
	}
	
	public void mudarCorCampoObrigatorioEstado(){
		jcomboEstado.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoEstado(){
		jcomboEstado.requestFocus();
	}
	
	public void mudarCorCampoObrigatorioCep(){
		jtCEP.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoCep(){
		jtCEP.requestFocus();
	}
	
	public void mudarCorCampoObrigatorioBairro(){
		jtBairro.setBackground(this.corCamposObrigatorios);
	}
	
	public void requestFocusCampoBairro(){
		jtBairro.requestFocus();
	}
	
	public void limparCorCamposObrigatorios(){
		jtNomeBiblioteca.setBackground(null);
		jtLogradouro.setBackground(null);
		jtNumero.setBackground(null);	
		jcomboCidade.setBackground(null);
		jcomboEstado.setBackground(null);
	}
	
	public void atualizarBiblioteca(Biblioteca biblioteca){
		this.model.atualizarBiblioteca(biblioteca);
	}
	
	public void atualizarBiblioteca(Biblioteca biblioteca, int indiceBibliotecaSelecionada){
		this.model.atualizarBiblioteca(biblioteca,indiceBibliotecaSelecionada);
	}
	
	public void inserirBiblioteca(Biblioteca biblioteca){
		this.model.inserir(biblioteca);
	}
	
		
	public int getIndiceBibliotecaSelecionada() {
		return tabelaBibliotecas.getSelectedRow();
	}
	
	public void setBibliotecaSelecionada(Biblioteca bibliotecaSelecionada) {
		this.bibliotecaSelecionada = bibliotecaSelecionada;
	}

	public Biblioteca getBibliotecaSelecionada() {
		return bibliotecaSelecionada;
	}
	
	public Biblioteca getBibliotecaEmEdicao() {
		return bibliotecaEmEdicao;
	}

	public void setBibliotecaEmEdicao(Biblioteca bibliotecaEmEdicao) {
		this.bibliotecaEmEdicao = bibliotecaEmEdicao;
	}

	public void setEstados(List<Estado> estados) {
		this.estados = estados;
	}

	public List<Estado> getEstados() {
		return estados;
	}
	
	public void removerBiblioteca(Biblioteca biblioteca){
		model.remover(biblioteca);
	}
	
	public Biblioteca getBiblioteca(int linhaSelecionada){
		return model.getBibliotecaDe(linhaSelecionada);
	}
	
	public void setBibliotecas(List<Biblioteca> bibliotecas){
		this.model.setBibliotecas(bibliotecas);
	}

}
